package com.hai.qtalk;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;

import java.util.Collection;

import net.sf.json.JSONObject;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.hai.bean.User;
import com.hai.qtalk.R;
import com.hai.util.DialogUtil;
import com.hai.util.HttpUtil;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Login extends Activity {
	// 定义界面中两个文本框
	EditText etName, etPass;
	// 定义界面中两个按钮
	Button bnLogin, bnCancel;
	
	String responseString;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login);
		// 获取界面中两个编辑框
		etName = (EditText) findViewById(R.id.userEditText);
		etPass = (EditText) findViewById(R.id.pwdEditText);
		// 获取界面中的两个按钮
		bnLogin = (Button) findViewById(R.id.bnLogin);
		bnCancel = (Button) findViewById(R.id.bnCancel);
		// 为bnCancal按钮的单击事件绑定事件监听器
		bnCancel.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				finish();
			}
		});
		bnLogin.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				// 执行输入校验
				if (validate()) // ①
				{
					// 如果登录成功
					try {
						if (loginPro()) // ②
						{
					//		System.out.println("从服务器端收到json数据："+responseString);
							//Gson g = new Gson();
							//Map map=g.fromJson(responseString, Map.class);
							//User u = new User("hai","111");

							Bundle data = new Bundle();
							data.putSerializable("json",  responseString);
							// 启动Main Activity
							Intent intent = new Intent(Login.this,
									FragmentTabs.class);
							intent.putExtras(data);
							startActivity(intent);
							// 结束该Activity
							finish();
						} else {
							DialogUtil.showDialog(Login.this,
									"用户帐号或者密码错误，请重新输入！", false);
						}
					} catch (Exception e) {
						DialogUtil.showDialog(Login.this, "服务器响应异常，请稍后再试！",
								false);
						e.printStackTrace();
					}
				}
			}
		});
	}

	private boolean loginPro() throws Exception {
		// 获取用户输入的用户帐号、密码
		String userId = etName.getText().toString();
		String pwd = etPass.getText().toString();
		// JSONObject jsonObj;

		if ((responseString=query(userId, pwd)) != null) {
			HttpUtil.UID=Integer.parseInt(userId);
			return true;
		}

		return false;
	}

	// 对用户输入的用户名、密码进行校验
	private boolean validate() {
		String username = etName.getText().toString().trim();
		if (username.equals("")) {
			DialogUtil.showDialog(this, "用户账户是必填项！", false);
			return false;
		}
		String pwd = etPass.getText().toString().trim();
		if (pwd.equals("")) {
			DialogUtil.showDialog(this, "用户口令是必填项！", false);
			return false;
		}
		return true;
	}

	// 定义发送请求的方法
	private String query(String userId, String password) throws Exception {

		// 使用Map封装请求参数
		HashMap<String, String> map = new HashMap<String, String>();
		map.put("method","login");
		map.put("userId", userId);
		map.put("password", password);

		Gson g = new Gson();
		String jsonString = g.toJson(map);
		System.out.println(jsonString);
		// JSONObject json=JSONObject.fromObject(map);
		// 定义发送请求的URL
		// /System.out.println("封装成功！");

		String url = HttpUtil.BASE_URL;// + "login.jsp";
		System.out.println(url);
		// 发送请求
		return HttpUtil.postRequest(url, jsonString);
	}
}